package com.ruoyi.yf.mapper;

import com.ruoyi.yf.domain.YfDept;
import com.ruoyi.yf.domain.interfaces.YfDepartment;
import com.ruoyi.yf.domain.mobile.YfMobileDeptNurse;
import org.apache.ibatis.annotations.Param;

import javax.validation.constraints.Pattern;
import java.util.List;

/**
 * 医院科室Mapper接口
 *
 * @author XiaoYi...
 * @date 2020-03-11
 * 0b3174dd-a36c-4ed3-b5b5-d0ad88096f9a
 */
public interface YfDeptMapper {
    /**
     * 查询医院科室
     *
     * @param deptId 医院科室ID
     * @return 医院科室
     * c1a47755-b89d-4317-8495-7ddd075b5de5
     */
    public YfDept selectYfDeptById(Long deptId);

    /**
     * 查询医院科室列表
     *
     * @param yfDept 医院科室
     * @return 医院科室集合
     * 6b6bc195-a33b-45bc-8d10-c417b3ff1bee
     */
    public List<YfDept> selectYfDeptList(YfDept yfDept);

    /**
     * 新增医院科室
     *
     * @param yfDept 医院科室
     * @return 结果
     * 28fc524a-b5d4-4c1d-aab7-3562bbbb84e5
     */
    public int insertYfDept(YfDept yfDept);

    /**
     * 修改医院科室
     *
     * @param yfDept 医院科室
     * @return 结果
     * 7e648ba6-d01a-49de-9fc4-3bc47c65bb8e
     */
    public int updateYfDept(YfDept yfDept);

    /**
     * 删除医院科室
     *
     * @param deptId 医院科室ID
     * @return 结果
     * 9d92e486-8cb4-40c9-bf90-c5e6d000af7d
     */
    public int deleteYfDeptById(Long deptId);

    /**
     * 批量删除医院科室
     *
     * @param deptIds 需要删除的数据ID
     * @return 结果
     * 2b014e65-8f08-42ab-9c65-2c449fac2c72
     */
    public int deleteYfDeptByIds(String[] deptIds);

    /**
     * 获取用户下的医院 或分区下的科室
     *
     * @param uid 用户id
     * @return
     * 54ab4e03-982c-44d7-8979-12a660c89304
     */
    public List<YfDept> getUserIdDepartment(@Param("uid") Long uid);

    /**
     * 通过暂存点id 获取医院科室 列表
     *
     * @param stagingId
     * @return
     * 2a8b17cc-f5aa-40cd-951f-b751d635f8a4
     */
    public List<YfDept> selectHD(@Param("sid") Long stagingId);



    /**
     * 根据用户所属医院 及以下 所有科室
     * @param deptId
     * @return
     * @author XiaoYi...
     * @date 2020/5/20 10:10
     * 7961a3d6-1aa2-4034-8a1a-caf9d16acc8b
     */
    List<YfDept> select_sysDept_yfDeptList(@Param("deptId") Long deptId);


    int updateRremoveAndRecoveryTagByIds(@Param("deptIds") String[] deptIds, @Param("status") String status);

    /**
     * 根据用户获取所在医院的科室护士列表
     * 01ffd668-b18c-4e81-bb1c-a1e27b06763e
     */
    List<YfMobileDeptNurse> getKSNuserListByUid(Long uid);

    // 获取科室及对应的标准科室
    //7776cb50-4934-4fe2-9c7b-83b145bf0ac0
    List<YfDept> getDepartmentAndStandardDeptByUserId(Long uid);

    // 今天无医废录入
    //958907ff-1353-46f0-a745-76761dd0f6db
    int todayNoYF(Long stagingId);

    /**
     * 获取机构所有科室
     * @param deptId 科室id
     * @param types 科室类型
     * @return
     * 6dd0b326-426b-4d05-a761-89d94c5048ea
     */
    List<YfDept> selectYfDeptListByDeptId(@Param("deptId") Long deptId,@Param("types") String[] types);

    // 根据医院获取所有科室
    //777a0112-db2e-41ef-839d-4f28ba96efdf
    List<YfDept> getYfDeptListByHospitalId(Long hosid);

    // 根据登录名(医院管理员)获取医疗机构的科室列表
    List<YfDepartment> getKslistByLoginName(String userName);

    // 根据暂存点查询医院所有科室
    List<YfDept> getKSlistByStagingId(Long stagingId);

}
